์ด์ ์ฒด์ ์ ํ๋ก์ธ์ค ๊ด๋ฆฌ ํต์ฌ ๊ฐ๋ ์ธ ํ๋ก์ธ์ค ์ํ, ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ, ํ๋ก์ธ์ค ๊ฐ ํต์ , ๊ต์ฐฉ ์ํ ์ฒ๋ฆฌ๋ฅผ ํ๊ตฌํฉ๋๋ค. ๊ฐ๋ฐ์์ ์์คํ ๊ด๋ฆฌ์์๊ฒ ํ์์ ์ ๋๋ค.
์ด์ ์ฒด์ : ํ๋ก์ธ์ค ๊ด๋ฆฌ์ ๋ํ ์ข ํฉ ๊ฐ์ด๋
ํ๋ก์ธ์ค ๊ด๋ฆฌ๋ ๋ชจ๋ ํ๋ ์ด์ ์ฒด์ ์ ๊ธฐ๋ณธ ์ธก๋ฉด์ ๋๋ค. ์ด๋ ํ๋ก์ธ์ค ์คํ ๊ด๋ฆฌ, ์์ ํ ๋น, ๊ทธ๋ฆฌ๊ณ ์ํํ ๋ฉํฐํ์คํน ๋ณด์ฅ์ ํฌํจํฉ๋๋ค. ์ด ๊ฐ์ด๋๋ ํ๋ก์ธ์ค ๊ด๋ฆฌ ๊ฐ๋ , ๊ธฐ์ ๋ฐ ๊ณผ์ ์ ๋ํ ์์ธํ ๊ฐ์๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ์, ๊ฐ๋ฐ์, ์์คํ ๊ด๋ฆฌ์ ๋ฐ ์ด์ ์ฒด์ ์๋ ๋ฐฉ์์ ๊ด์ฌ์ด ์๋ ๋ชจ๋ ์ฌ๋์ ์ํด ์ค๊ณ๋์์ต๋๋ค.
ํ๋ก์ธ์ค๋ ๋ฌด์์ธ๊ฐ?
ํต์ฌ์ ์ผ๋ก, ํ๋ก์ธ์ค๋ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ ์ธ์คํด์ค์ ๋๋ค. ์ด๋ ๋จ์ํ ํ๋ก๊ทธ๋จ ์ฝ๋๋ฅผ ๋์ด์ ํ๋ก๊ทธ๋จ ์นด์ดํฐ, ๋ ์ง์คํฐ, ๋ณ์์ ํ์ฌ ๊ฐ์ ํฌํจํฉ๋๋ค. ๊ฐ ํ๋ก์ธ์ค๋ ์์ฒด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ง๋ฉฐ, ์ด๋ฅผ ํตํด ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ง์ ์ ์ผ๋ก ๊ฐ์ญํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
ํ๋ก๊ทธ๋จ์ ๋ ์ํผ๋ก, ํ๋ก์ธ์ค๋ฅผ ์ค์ ๋ก ์๋ฆฌ๋ฅผ ํ๋ ํ์๋ก ์๊ฐํด๋ณด์ธ์. ๋์ผํ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ์ฌ๋ฌ ํ๋ก์ธ์ค(์: ํ ์คํธ ํธ์ง๊ธฐ์ ์ฌ๋ฌ ์ธ์คํด์ค)๋ฅผ ๋์์ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ๊ณ ์ ํ ๋ฐ์ดํฐ์ ์ํ๋ฅผ ๊ฐ์ง๋๋ค.
ํ๋ก์ธ์ค์ ์ฃผ์ ๊ตฌ์ฑ ์์:
- ํ๋ก๊ทธ๋จ ์ฝ๋(ํ ์คํธ ์น์ ): ์คํ๋ ๋ช ๋ น์ด๋ค.
- ๋ฐ์ดํฐ ์น์ : ์ ์ญ ๋ณ์์ ๋์ ์ผ๋ก ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ.
- ์คํ: ํจ์ ํธ์ถ, ์ง์ญ ๋ณ์, ๋ฐํ ์ฃผ์์ ์ฌ์ฉ๋ฉ๋๋ค.
- ํ: ๋ฐํ์ ์ค์ ๋์ ์ผ๋ก ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ.
- ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก(PCB): ๊ฐ ํ๋ก์ธ์ค์ ๋ํด OS๊ฐ ์ ์ง ๊ด๋ฆฌํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ก, ํ๋ก์ธ์ค ID, ์ํ, ํ๋ก๊ทธ๋จ ์นด์ดํฐ, ๋ ์ง์คํฐ ๊ฐ๊ณผ ๊ฐ์ ์ ๋ณด๋ฅผ ํฌํจํฉ๋๋ค.
ํ๋ก์ธ์ค ์ํ
ํ๋ก์ธ์ค๋ ์๋ช ์ฃผ๊ธฐ ๋์ ์ฌ๋ฌ ๋ค๋ฅธ ์ํ๋ฅผ ๊ฑฐ์นฉ๋๋ค. ์ด๋ฌํ ์ํ๋ฅผ ์ดํดํ๋ ๊ฒ์ ํ๋ก์ธ์ค ๊ด๋ฆฌ๋ฅผ ์ดํดํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
- ์์ฑ(New): ํ๋ก์ธ์ค๊ฐ ์์ฑ๋๋ ์ค์ ๋๋ค.
- ์ค๋น(Ready): ํ๋ก์ธ์์ ํ ๋น๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ์ ๋๋ค.
- ์คํ(Running): ๋ช ๋ น์ด๋ค์ด ์คํ๋๋ ์ค์ ๋๋ค.
- ๋๊ธฐ(Waiting/Blocked): ํ๋ก์ธ์ค๊ฐ ์ด๋ค ์ด๋ฒคํธ(์: I/O ์๋ฃ ๋๋ ์ ํธ ์์ )๊ฐ ๋ฐ์ํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ํ์ ๋๋ค.
- ์ข ๋ฃ(Terminated): ํ๋ก์ธ์ค๊ฐ ์คํ์ ๋ง์น ์ํ์ ๋๋ค.
์ด๋ฌํ ์ํ๋ค์ ํ๋ก์ธ์ค์ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๋ํ๋ด๋ฉฐ, ์ด์ ์ฒด์ ๋ ์ด๋ค ์ฌ์ด์ ์ ํ์ ๊ด๋ฆฌํ ์ฑ ์์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ๋ก์ธ์ค๊ฐ ๋์คํฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ผ ํ ๋, ์คํ ์ํ์์ ๋๊ธฐ ์ํ๋ก ์ ํ๋์ด I/O ์์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค. ๊ทธ๋ฐ ๋ค์, ๋ค์ ์คํ๋ ์ฐจ๋ก๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ์ค๋น ์ํ๋ก ์ ํ๋ฉ๋๋ค.
ํ๋ก์ธ์ค ์ ์ด ๋ธ๋ก(PCB)
PCB๋ ์ด์ ์ฒด์ ๊ฐ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐ ํ์ํ ๋ชจ๋ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ๋๋ค. ์ด๊ฒ์ ๋ง์น ํ๋ก์ธ์ค์ ์ด๋ ฅ์์ ๊ฐ์์, OS๊ฐ ํ๋ก์ธ์ค๋ฅผ ์ถ์ ํ๊ธฐ ์ํด ์์์ผ ํ ๋ชจ๋ ๊ฒ์ ๋ด๊ณ ์์ต๋๋ค.
PCB์ ์ผ๋ฐ์ ์ธ ๋ด์ฉ:
- ํ๋ก์ธ์ค ID (PID): ํ๋ก์ธ์ค๋ฅผ ์ํ ๊ณ ์ ์๋ณ์์ ๋๋ค.
- ํ๋ก์ธ์ค ์ํ: ํ๋ก์ธ์ค์ ํ์ฌ ์ํ(์: ์ค๋น, ์คํ, ๋๊ธฐ)์ ๋๋ค.
- ํ๋ก๊ทธ๋จ ์นด์ดํฐ(PC): ๋ค์์ ์คํ๋ ๋ช ๋ น์ด์ ์ฃผ์์ ๋๋ค.
- CPU ๋ ์ง์คํฐ: CPU ๋ ์ง์คํฐ์ ๋ด์ฉ(๋์ฐ๊ธฐ, ์ธ๋ฑ์ค ๋ ์ง์คํฐ, ์คํ ํฌ์ธํฐ, ๋ฒ์ฉ ๋ ์ง์คํฐ ๋ฐ ๋ชจ๋ ์กฐ๊ฑด ์ฝ๋ ์ ๋ณด)์ ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ ๋ณด: ํ๋ก์ธ์ค์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ์ ๋ณด, ์๋ฅผ ๋ค์ด ๊ธฐ์ค ๋ฐ ์ ํ ๋ ์ง์คํฐ, ํ์ด์ง ํ ์ด๋ธ, ๋๋ ์ธ๊ทธ๋จผํธ ํ ์ด๋ธ ๋ฑ์ ๋๋ค.
- ๊ณ์ ์ ๋ณด: ์ฌ์ฉ๋ CPU ์๊ฐ, ์๊ฐ ์ ํ, ๊ณ์ ๋ฒํธ, ์ฌ์ฉ๋ ๋ฉ๋ชจ๋ฆฌ ์ ๋ฑ์ ๋๋ค.
- I/O ์ํ ์ ๋ณด: ํ๋ก์ธ์ค์ ํ ๋น๋ I/O ์ฅ์น, ์ด๋ฆฐ ํ์ผ ๋ชฉ๋ก ๋ฑ์ ๋๋ค.
ํ๋ก์ธ์ค ์ค์ผ์ค๋ง
ํ๋ก์ธ์ค ์ค์ผ์ค๋ง์ ์ค๋น ํ์ ์๋ ํ๋ก์ธ์ค ์ค ์ด๋ค ํ๋ก์ธ์ค์ CPU๋ฅผ ํ ๋นํ ์ง ๊ฒฐ์ ํ๋ ํ๋์ ๋๋ค. ์ค์ผ์ค๋ง์ ๋ชฉํ๋ CPU ์ฌ์ฉ๋ฅ ๊ทน๋ํ, ์ฒ๋ฆฌ ์๊ฐ ์ต์ํ ๋๋ ํ๋ก์ธ์ค ๊ฐ ๊ณต์ ์ฑ ๋ณด์ฅ๊ณผ ๊ฐ์ ํน์ ๊ธฐ์ค์ ๋ฐ๋ผ ์์คํ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๊ฒ์ ๋๋ค.
์ค์ผ์ค๋ง ํ
OS๋ ํ๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ก์ธ์ค๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์์ ํ(Job queue): ์์คํ ์ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ํฌํจํฉ๋๋ค.
- ์ค๋น ํ(Ready queue): ์คํ ์ค๋น๊ฐ ๋์ด CPU๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ํฌํจํฉ๋๋ค.
- ์ฅ์น ํ(Device queues): ๊ฐ I/O ์ฅ์น๋ง๋ค ํ๋์ฉ ์๋ ํ๋ค์ ์งํฉ์ผ๋ก, ํด๋น ์ฅ์น๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ํ๋ก์ธ์ค๋ค์ ํฌํจํฉ๋๋ค.
์ค์ผ์ค๋ฌ
์ค์ผ์ค๋ฌ๋ ๋ค์์ ์คํํ ํ๋ก์ธ์ค๋ฅผ ์ ํํ๋ ์์คํ ์ํํธ์จ์ด ๋ชจ๋์ ๋๋ค. ์ค์ผ์ค๋ฌ์๋ ๋ ๊ฐ์ง ์ฃผ์ ์ ํ์ด ์์ต๋๋ค:
- ์ฅ๊ธฐ ์ค์ผ์ค๋ฌ(์์ ์ค์ผ์ค๋ฌ): ์์ ํ์์ ํ๋ก์ธ์ค๋ฅผ ์ ํํ์ฌ ์คํ์ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ๋ก๋ํฉ๋๋ค. ์ด๋ ๋ค์ค ํ๋ก๊ทธ๋๋ฐ์ ์ ๋(๋ฉ๋ชจ๋ฆฌ์ ์๋ ํ๋ก์ธ์ค์ ์)๋ฅผ ์ ์ดํฉ๋๋ค. ๋จ๊ธฐ ์ค์ผ์ค๋ฌ๋ณด๋ค ๋ ์์ฃผ ์คํ๋ฉ๋๋ค.
- ๋จ๊ธฐ ์ค์ผ์ค๋ฌ(CPU ์ค์ผ์ค๋ฌ): ์ค๋น ํ์์ ํ๋ก์ธ์ค๋ฅผ ์ ํํ์ฌ CPU๋ฅผ ํ ๋นํฉ๋๋ค. ๋งค์ฐ ์์ฃผ ์คํ๋๋ฏ๋ก ์๋๊ฐ ๋นจ๋ผ์ผ ํฉ๋๋ค.
์ผ๋ถ ์์คํ ์๋ ๋ค์ค ํ๋ก๊ทธ๋๋ฐ์ ์ ๋๋ฅผ ์ค์ด๊ธฐ ์ํด ํ๋ก์ธ์ค๋ฅผ ๋ฉ๋ชจ๋ฆฌ์์ ๋์คํฌ๋ก ๊ต์ฒด(swap out)ํ๋ค๊ฐ ๋ค์ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์ค๋(swap in) ์ค๊ธฐ ์ค์ผ์ค๋ฌ๋ ์์ต๋๋ค. ์ด๋ฅผ ์ค์ํ(swapping)์ด๋ผ๊ณ ๋ ํฉ๋๋ค.
์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ
์๋ง์ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ด ์กด์ฌํ๋ฉฐ, ๊ฐ๊ฐ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์ ํ์ ์์คํ ์ ํน์ ๋ชฉํ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค:
- ์ ์ ์ ์ถ(FCFS): ํ๋ก์ธ์ค๊ฐ ๋์ฐฉํ ์์๋๋ก ์คํ๋ฉ๋๋ค. ๊ตฌํ์ ๊ฐ๋จํ์ง๋ง, ๊ธด ํ๋ก์ธ์ค๊ฐ ๋จผ์ ๋์ฐฉํ๋ฉด ์งง์ ํ๋ก์ธ์ค์ ๋๊ธฐ ์๊ฐ์ด ๊ธธ์ด์ง ์ ์์ต๋๋ค(ํธ์ก ํจ๊ณผ).
- ์ต๋จ ์์ ์ฐ์ (SJF): ์คํ ์๊ฐ์ด ๊ฐ์ฅ ์งง์ ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์คํ๋ฉ๋๋ค. ํ๊ท ๋๊ธฐ ์๊ฐ์ ์ต์ํํ๋ ๋ฐ ์ต์ ์ด์ง๋ง, ์ฌ์ ์ ์คํ ์๊ฐ์ ์์์ผ ํ๋๋ฐ ์ด๋ ์ข ์ข ๋ถ๊ฐ๋ฅํฉ๋๋ค.
- ์ฐ์ ์์ ์ค์ผ์ค๋ง: ๊ฐ ํ๋ก์ธ์ค์ ์ฐ์ ์์๊ฐ ํ ๋น๋๊ณ , ๊ฐ์ฅ ๋์ ์ฐ์ ์์๋ฅผ ๊ฐ์ง ํ๋ก์ธ์ค๊ฐ ๋จผ์ ์คํ๋ฉ๋๋ค. ์ฐ์ ์์๊ฐ ๋์ ํ๋ก์ธ์ค์ ์ํด ๋ฎ์ ์ฐ์ ์์์ ํ๋ก์ธ์ค๊ฐ ๊ณ์ํด์ ์ ์ ๋๋ฉด ๊ธฐ์(starvation) ์ํ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ๋ผ์ด๋ ๋ก๋น(RR): ๊ฐ ํ๋ก์ธ์ค์ ๊ณ ์ ๋ ์๊ฐ ํ ๋น๋(quantum)์ด ์ฃผ์ด์ ธ ์คํ๋ฉ๋๋ค. ์๊ฐ ํ ๋น๋ ๋ด์ ํ๋ก์ธ์ค๊ฐ ์๋ฃ๋์ง ์์ผ๋ฉด ์ค๋น ํ์ ๋งจ ๋ค๋ก ์ด๋ํฉ๋๋ค. ๊ณต์ ํ๊ณ ๊ธฐ์ ์ํ๋ฅผ ๋ฐฉ์งํ์ง๋ง, ์๊ฐ ํ ๋น๋์ด ๋๋ฌด ์์ผ๋ฉด ๋ฌธ๋งฅ ๊ตํ ์ค๋ฒํค๋๋ก ์ธํด ํจ์จ์ฑ์ด ๊ฐ์ํ ์ ์์ต๋๋ค.
- ๋ค๋จ๊ณ ํ ์ค์ผ์ค๋ง: ์ค๋น ํ๊ฐ ์ฌ๋ฌ ๊ฐ์ ํ๋ก ๋ถํ ๋๋ฉฐ, ๊ฐ ํ๋ ๊ณ ์ ํ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ์ง๋๋ค. ํ๋ก์ธ์ค๋ ์์ฑ(์: ๋ํํ vs. ๋ฐฐ์น)์ ๋ฐ๋ผ ํ์ ํ ๋น๋ฉ๋๋ค.
- ๋ค๋จ๊ณ ํผ๋๋ฐฑ ํ ์ค์ผ์ค๋ง: ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ ์ฌ์ด๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ค์ผ์ค๋ฌ๋ ํ๋ก์ธ์ค์ ํ๋์ ๋ฐ๋ผ ๋์ ์ผ๋ก ์ฐ์ ์์๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค.
์์: ๋ฒ์คํธ ์๊ฐ(์คํ ์๊ฐ)์ด ๊ฐ๊ฐ 24, 3, 3๋ฐ๋ฆฌ์ด์ธ ์ธ ๊ฐ์ ํ๋ก์ธ์ค P1, P2, P3์ ๊ณ ๋ คํด ๋ด ์๋ค. ์ด๋ค์ด P1, P2, P3 ์์๋ก ๋์ฐฉํ๋ฉด FCFS ์ค์ผ์ค๋ง์ P1, P2, P3 ์์ผ๋ก ์คํ๋ฉ๋๋ค. ํ๊ท ๋๊ธฐ ์๊ฐ์ (0 + 24 + 27) / 3 = 17๋ฐ๋ฆฌ์ด๊ฐ ๋ฉ๋๋ค. ํ์ง๋ง SJF๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ก์ธ์ค๋ P2, P3, P1 ์์๋ก ์คํ๋๋ฉฐ, ํ๊ท ๋๊ธฐ ์๊ฐ์ (0 + 3 + 6) / 3 = 3๋ฐ๋ฆฌ์ด๊ฐ ๋์ด ์๋นํ ๊ฐ์ ์ด ์ด๋ฃจ์ด์ง๋๋ค!
ํ๋ก์ธ์ค ๊ฐ ํต์ (IPC)
ํ๋ก์ธ์ค ๊ฐ ํต์ (IPC)์ ํ๋ก์ธ์ค๋ค์ด ์๋ก ํต์ ํ๊ณ ๋๊ธฐํํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ ํจ๊ป ์๋ํ๋ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ก ๊ตฌ์ฑ๋ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ํ์์ ์ ๋๋ค.
์ผ๋ฐ์ ์ธ IPC ๋ฉ์ปค๋์ฆ:
- ๊ณต์ ๋ฉ๋ชจ๋ฆฌ: ํ๋ก์ธ์ค๋ค์ด ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๊ณต์ ํ์ฌ ๋ฐ์ดํฐ์ ์ง์ ์ ๊ทผํ๊ณ ์์ ํ ์ ์๊ฒ ํฉ๋๋ค. ๊ฒฝ์ ์ํ๋ฅผ ํผํ๊ธฐ ์ํด ์ ์คํ ๋๊ธฐํ๊ฐ ํ์ํฉ๋๋ค.
- ๋ฉ์์ง ์ ๋ฌ: ํ๋ก์ธ์ค๋ค์ด ์๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ด ํต์ ํฉ๋๋ค. ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ณด๋ค ๋ ๋์ ๊ฒฉ๋ฆฌ๋ฅผ ์ ๊ณตํ์ง๋ง ์๋๊ฐ ๋๋ฆด ์ ์์ต๋๋ค.
- ํ์ดํ: ๋ ํ๋ก์ธ์ค ๊ฐ์ ๋จ๋ฐฉํฅ ํต์ ์ฑ๋์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ด๋ จ๋ ํ๋ก์ธ์ค(์: ๋ถ๋ชจ์ ์์) ๊ฐ์ ํต์ ์ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋ช ๋ช ๋ ํ์ดํ(FIFO): ํ์ดํ์ ์ ์ฌํ์ง๋ง ๊ด๋ จ ์๋ ํ๋ก์ธ์ค ๊ฐ์ ํต์ ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋ฉ์์ง ํ: ํ๋ก์ธ์ค๋ค์ด ํ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ๋ฐ์ ์ ์์ต๋๋ค. ๋น๋๊ธฐ ํต์ ์ ์ ๊ณตํฉ๋๋ค.
- ์์ผ: ๋์ผํ ์์คํ ๋๋ ๋คํธ์ํฌ๋ฅผ ํตํด ํ๋ก์ธ์ค ๊ฐ ํต์ ์ ์ํ ๋ค๋ชฉ์ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ํด๋ผ์ด์ธํธ-์๋ฒ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ๋ถ์ฐ ์์คํ ์ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ ํธ: ํ๋ก์ธ์ค์๊ฒ ์ด๋ฒคํธ(์: ์ข ๋ฃ ์์ฒญ, ์ค๋ฅ ์กฐ๊ฑด)๋ฅผ ์๋ฆฌ๊ธฐ ์ํด ๋ณด๋ผ ์ ์๋ ์ํํธ์จ์ด ์ธํฐ๋ฝํธ์ ๋๋ค.
์์: ์น ์๋ฒ๋ ๋ค์ด์ค๋ ์์ฒญ์ ๋์์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ฐ ํ๋ก์ธ์ค๋ ๋จ์ผ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ผ๋ฉฐ, ํ๋ก์ธ์ค๋ค์ ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฉ์์ง ์ ๋ฌ์ ์ฌ์ฉํ์ฌ ์๋ฒ ์ํ์ ๋ํ ๋ฐ์ดํฐ๋ฅผ ๊ณต์ ํ ์ ์์ต๋๋ค.
๋๊ธฐํ
์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ๊ณต์ ์์์ ์ ๊ทผํ ๋, ๋ฐ์ดํฐ ์์๊ณผ ๊ฒฝ์ ์ํ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋๊ธฐํ๋ฅผ ๋ณด์ฅํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋๊ธฐํ ๋ฉ์ปค๋์ฆ์ ํ๋ก์ธ์ค์ ์คํ์ ์กฐ์ ํ๊ณ ๊ณต์ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
์ผ๋ฐ์ ์ธ ๋๊ธฐํ ๊ธฐ๋ฒ:
- ๋ฎคํ ์ค ๋ฝ: ์ฝ๋์ ์๊ณ ๊ตฌ์ญ์ ๋ณดํธํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ์ด์ง ์ธ๋งํฌ์ ๋๋ค. ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ๋ฎคํ ์ค ๋ฝ์ ๋ณด์ ํ ์ ์์ต๋๋ค.
- ์ธ๋งํฌ: ์ ํ๋ ์์ ์์์ ๋ํ ์ ๊ทผ์ ์ ์ดํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ฎคํ ์ค ๋ฝ์ ์ผ๋ฐํ๋ ํํ์ ๋๋ค.
- ๋ชจ๋ํฐ: ๊ณต์ ๋ฐ์ดํฐ์ ๊ทธ ๋ฐ์ดํฐ์ ๋ํด ์ํํ ์ ์๋ ์์ ์ ์บก์ํํ๋ ๊ณ ์์ค ๋๊ธฐํ ๊ตฌ์กฐ์ฒด์ ๋๋ค. ์ํธ ๋ฐฐ์ ๋ฐ ๋๊ธฐ/์ ํธ๋ฅผ ์ํ ์กฐ๊ฑด ๋ณ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์กฐ๊ฑด ๋ณ์: ๋ชจ๋ํฐ ๋ด์์ ํ๋ก์ธ์ค๊ฐ ํน์ ์กฐ๊ฑด์ด ์ฐธ์ด ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆด ์ ์๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
- ์คํ๋ฝ: ํ๋ก์ธ์ค๊ฐ ๋ฝ์ ์ฌ์ฉํ ์ ์๋์ง ๋ฐ๋ณต์ ์ผ๋ก ํ์ธํ๋ ์ ํ์ ๋ฝ์ ๋๋ค. ์งง์ ์๊ณ ๊ตฌ์ญ์๋ ํจ์จ์ ์ผ ์ ์์ง๋ง, ๋ฝ์ด ์ค๋ซ๋์ ์ ์ง๋๋ฉด CPU ์๊ฐ์ ๋ญ๋นํฉ๋๋ค.
์์: ์ฌ๋ฌ ํ๋ก์ธ์ค์ ์ํด ์ฆ๊ฐ๋๋ ๊ณต์ ์นด์ดํฐ๋ฅผ ์๊ฐํด ๋ด ์๋ค. ๋๊ธฐํ๊ฐ ์์ผ๋ฉด ์ฌ๋ฌ ํ๋ก์ธ์ค๊ฐ ์นด์ดํฐ ๊ฐ์ ์ฝ๊ณ , ์ฆ๊ฐ์ํค๊ณ , ๋ค์ ์ฐ๋ ๊ณผ์ ์์ ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ์ด๋ํ ์ ์์ต๋๋ค. ๋ฎคํ ์ค ๋ฝ์ ์ฌ์ฉํ์ฌ ์ฆ๊ฐ ์ฐ์ฐ์ ๋ณดํธํ๋ฉด ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์นด์ดํฐ์ ์ ๊ทผํ ์ ์๋๋ก ๋ณด์ฅํ์ฌ ๊ฒฝ์ ์ํ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
๊ต์ฐฉ ์ํ(Deadlock)
๊ต์ฐฉ ์ํ๋ ๋ ์ด์์ ํ๋ก์ธ์ค๊ฐ ๊ฐ๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ๋ณด์ ํ ์์์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๋ฌดํ์ ์ผ๋ก ์ฐจ๋จ๋ ๋ ๋ฐ์ํฉ๋๋ค. ์ด๋ ์์คํ ์ ์ค๋จ์ํฌ ์ ์๋ ์ฌ๊ฐํ ๋ฌธ์ ์ ๋๋ค.
๊ต์ฐฉ ์ํ์ ์กฐ๊ฑด:
๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ๋ ค๋ฉด ๋ค ๊ฐ์ง ์กฐ๊ฑด(์ฝํ๋ง ์กฐ๊ฑด)์ด ๋์์ ์ถฉ์กฑ๋์ด์ผ ํฉ๋๋ค:
- ์ํธ ๋ฐฐ์ : ์ ์ด๋ ํ๋์ ์์์ ๋น๊ณต์ ๋ชจ๋๋ก ์ ์ง๋์ด์ผ ํฉ๋๋ค. ์ฆ, ํ ๋ฒ์ ํ๋์ ํ๋ก์ธ์ค๋ง ์์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์ ์ ๋ฐ ๋๊ธฐ: ํ๋ก์ธ์ค๊ฐ ์ ์ด๋ ํ๋์ ์์์ ๋ณด์ ํ ์ํ์์, ํ์ฌ ๋ค๋ฅธ ํ๋ก์ธ์ค์ ์ํด ๋ณด์ ๋ ์ถ๊ฐ ์์์ ์ป๊ธฐ ์ํด ๋๊ธฐํด์ผ ํฉ๋๋ค.
- ๋น์ ์ : ์์์ ํ๋ก์ธ์ค๋ก๋ถํฐ ๊ฐ์ ๋ก ๋นผ์์ ์ ์์ผ๋ฉฐ, ์์์ ๊ทธ๊ฒ์ ๋ณด์ ํ ํ๋ก์ธ์ค์ ์ํด์๋ง ์๋ฐ์ ์ผ๋ก ํด์ ๋ ์ ์์ต๋๋ค.
- ์ํ ๋๊ธฐ: ๋๊ธฐ ์ค์ธ ํ๋ก์ธ์ค์ ์งํฉ {P0, P1, ..., Pn}์ด ์กด์ฌํ์ฌ, P0๋ P1์ด ๋ณด์ ํ ์์์ ๊ธฐ๋ค๋ฆฌ๊ณ , P1์ P2๊ฐ ๋ณด์ ํ ์์์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ, ..., Pn-1์ Pn์ด ๋ณด์ ํ ์์์, Pn์ P0๊ฐ ๋ณด์ ํ ์์์ ๊ธฐ๋ค๋ฆฌ๋ ์ํ์ฌ์ผ ํฉ๋๋ค.
๊ต์ฐฉ ์ํ ์ฒ๋ฆฌ ๊ธฐ๋ฒ:
๊ต์ฐฉ ์ํ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ๋ ์ฌ๋ฌ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ด ์์ต๋๋ค:
- ๊ต์ฐฉ ์ํ ์๋ฐฉ: ์ฝํ๋ง ์กฐ๊ฑด ์ค ์ ์ด๋ ํ๋๊ฐ ์ฑ๋ฆฝํ์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ๋ก์ธ์ค๊ฐ ๋ชจ๋ ์์์ ํ ๋ฒ์ ์์ฒญํ๋๋ก ์๊ตฌํ๊ฑฐ๋ ์์์ ์ ์ ์ ํ์ฉํฉ๋๋ค.
- ๊ต์ฐฉ ์ํ ํํผ: ์์ ํ ๋น์ ๋ํ ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ ๊ต์ฐฉ ์ํ์ ๋ค์ด๊ฐ์ง ์๋๋ก ํฉ๋๋ค. ์ํ์ ์๊ณ ๋ฆฌ์ฆ์ด ์ผ๋ฐ์ ์ธ ์์ ๋๋ค.
- ๊ต์ฐฉ ์ํ ํ์ง ๋ฐ ๋ณต๊ตฌ: ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ๋๋ก ํ์ฉํ ๋ค์, ์ด๋ฅผ ํ์งํ๊ณ ๋ณต๊ตฌํฉ๋๋ค. ๋ณต๊ตฌ๋ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ๊ฑฐ๋ ์์์ ์ ์ ํ๋ ๊ฒ์ ํฌํจํ ์ ์์ต๋๋ค.
- ๊ต์ฐฉ ์ํ ๋ฌด์: ๋ฌธ์ ๋ฅผ ๋ฌด์ํ๊ณ ๋ฐ์ํ์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ด๊ฒ์ Windows ๋ฐ Linux๋ฅผ ํฌํจํ ๋๋ถ๋ถ์ ์ด์ ์ฒด์ ์์ ์ฑํํ๋ ์ ๊ทผ ๋ฐฉ์์ผ๋ก, ๊ต์ฐฉ ์ํ ์๋ฐฉ ๋ฐ ํํผ๋ ๋น์ฉ์ด ๋ง์ด ๋ค ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์์: ๋ ํ๋ก์ธ์ค P1, P2์ ๋ ์์ R1, R2๋ฅผ ์๊ฐํด ๋ด ์๋ค. P1์ R1์ ๋ณด์ ํ๊ณ R2๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๊ณ , P2๋ R2๋ฅผ ๋ณด์ ํ๊ณ R1์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ ์ํ ๋๊ธฐ๋ฅผ ๋ง๋ค์ด ๊ต์ฐฉ ์ํ๋ก ์ด์ด์ง๋๋ค. ์ด ๊ต์ฐฉ ์ํ๋ฅผ ์๋ฐฉํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ํ๋ก์ธ์ค๊ฐ ์คํ์ ์์ํ๊ธฐ ์ ์ ๋ชจ๋ ์์์ ํ ๋ฒ์ ์์ฒญํ๋๋ก ์๊ตฌํ๋ ๊ฒ์ ๋๋ค.
์ค์ ์ฌ๋ก
ํ๋ก์ธ์ค ๊ด๋ฆฌ ๊ฐ๋ ์ ์ ์ธ๊ณ์ ๋ค์ํ ์ด์ ์ฒด์ ์์ ์ฌ์ฉ๋ฉ๋๋ค:
- Linux: ๋ชจ๋ ํ๋ก์ธ์ค์ ๊ณต์ ํ CPU ํ ๋น์ ์ ๊ณตํ๋ ๊ฒ์ ๋ชฉํ๋ก ํ๋ CFS(Completely Fair Scheduler)๋ผ๋ ์ ๊ตํ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํฉ๋๋ค.
- Windows: ์ฌ๋ฌ ์ฐ์ ์์ ์์ค์ ๊ฐ์ง ์ฐ์ ์์ ๊ธฐ๋ฐ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํฉ๋๋ค.
- macOS: ์ฐ์ ์์ ๊ธฐ๋ฐ ์ค์ผ์ค๋ง๊ณผ ์๋ถํ ์ ๊ฒฐํฉํ ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
- Android: Linux ์ปค๋์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋์์ผ๋ฉฐ, ๋ชจ๋ฐ์ผ ์ฅ์น์ ์ต์ ํ๋ ์ ์ฌํ ํ๋ก์ธ์ค ๊ด๋ฆฌ ๊ธฐ์ ์ ์ฌ์ฉํฉ๋๋ค.
- ์ค์๊ฐ ์ด์ ์ฒด์ (RTOS): ์๋ฒ ๋๋ ์์คํ ๋ฐ ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ๋๋ฉฐ, ์์ ์ ์๊ธฐ์ ์ ํ ์คํ์ ๋ณด์ฅํ๋ ํน์ ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ์ ์์ฃผ ์ฌ์ฉํฉ๋๋ค. ์๋ก๋ VxWorks์ FreeRTOS๊ฐ ์์ต๋๋ค.
๊ฒฐ๋ก
ํ๋ก์ธ์ค ๊ด๋ฆฌ๋ ๋ฉํฐํ์คํน, ์์ ๊ณต์ ๋ฐ ํจ์จ์ ์ธ ์์คํ ํ์ฉ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ์ด์ ์ฒด์ ์ ์ค์ํ ์ธก๋ฉด์ ๋๋ค. ์ด ๊ฐ์ด๋์์ ๋ ผ์๋ ๊ฐ๋ ์ ์ดํดํ๋ ๊ฒ์ ์ด์ ์ฒด์ ๋ฅผ ๋ค๋ฃจ๊ฑฐ๋, ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๊ฑฐ๋, ์์คํ ์ ๊ด๋ฆฌํ๋ ๋ชจ๋ ์ฌ๋์๊ฒ ํ์์ ์ ๋๋ค. ํ๋ก์ธ์ค ์ํ, ์ค์ผ์ค๋ง ์๊ณ ๋ฆฌ์ฆ, ํ๋ก์ธ์ค ๊ฐ ํต์ ๋ฐ ๊ต์ฐฉ ์ํ ์ฒ๋ฆฌ๋ฅผ ๋ง์คํฐํจ์ผ๋ก์จ ๋ ๊ฒฌ๊ณ ํ๊ณ ํจ์จ์ ์ด๋ฉฐ ์ ๋ขฐํ ์ ์๋ ์ํํธ์จ์ด ์์คํ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ๋ค์ํ ์ ๊ทผ ๋ฐฉ์ ๊ฐ์ ์ฅ๋จ์ ์ ๊ณ ๋ คํ๊ณ ํน์ ์๊ตฌ์ ๊ฐ์ฅ ์ ํฉํ ๊ธฐ์ ์ ์ ํํ๋ ๊ฒ์ ๊ธฐ์ตํ์ญ์์ค.
์ถ๊ฐ ํ์ต
ํ๋ก์ธ์ค ๊ด๋ฆฌ์ ๋ํ ์ดํด๋ฅผ ์ฌํ์ํค๋ ค๋ฉด ๋ค์ ์๋ฃ๋ค์ ํ์ํด ๋ณด์ญ์์ค:
- Abraham Silberschatz, Peter Baer Galvin, Greg Gagne์ Operating System Concepts
- Andrew S. Tanenbaum์ Modern Operating Systems
- Coursera, edX, Udacity์ ๊ฐ์ ํ๋ซํผ์ ์ด์ ์ฒด์ ์ ๋ํ ์จ๋ผ์ธ ๊ฐ์ข ๋ฐ ํํ ๋ฆฌ์ผ.
- ์ ํํ ์ด์ ์ฒด์ ์ ๋ฌธ์(์: Linux man ํ์ด์ง, Windows API ๋ฌธ์).